var mongoose = require('./db.js')

var UserSchema = mongoose.Schema({
  username: {
    type: String,
    required: true
  },
  age: {
    type: Number,
    min: 0,  // 用在Number类型
    max: 150
  },
  status: {
    type: Number,
    default: 1, // 默认参数
    // enum: [0, 1, 2] // status 的值必须在 对应的数组里面 注意：枚举是用在String类型的
  },
  sn: {
    type: String,
    index: true,  // 普通索引
    // maxlength: 200, 
    // minlength: 2,
    // mathch: /^sn(.*)/i,
    validate: function(desc) { return desc.length >= 10; }  
  }
})

// 静态方法
UserSchema.statics.findBySn = function(sn, cb) {
  // 通过 find 方法获取 sn 的数据； this 关键字获取当前的model
  this.find({'sn': sn}, function(err, docs) {
    cb(err, docs)
  })
}
// 实例方法（基本不用）
UserSchema.methods.print = function() {
  console.log('我是一个实例方法')
  console.log(this) // 实例，可获取实例传入的数据
}

var UserModel = mongoose.model('User', UserSchema, 'user')

module.exports = UserModel

/* 
// es5
function Person() {
  this.run1 = function() {  

  }
}
Person.name='哈哈哈';
Person.run2 = function() {  // 静态方法

}
var p = new Person();
Person.run2(); // 静态方法的调用
p.run1(); // 实例方法

//ts中
class Per {
  public name: string;
  public age: number=20;
  //静态属性

  static sex="男";
  constructor(name:string) {
    this.name=name;
  }
  run() {  // 实例方法
    alert(`${this.name}在运动`)
  }
  work() {
    alert(`${this.name}在工作`)
  }
  static print() {  // 静态方法  里面没法直接调用类里面的属性
    alert('print方法'+Per.sex);
  }
}

// var p=new Per('张三');
// p.run();

Per.print();

alert(Per.sex); */
